eb7f83
@@ -19,6 +19,7 @@
package org.springframework.web.servlet.tags;
 import java.io.IOException;
 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.PageContext;
+import javax.servlet.jsp.el.VariableResolver;
 
 import org.springframework.core.convert.ConversionService;
 import org.springframework.expression.AccessException;
@@ -40,6 +41,7 @@
import org.springframework.web.util.TagUtils;
  * Supports the standard JSP evaluation context consisting of implicit variables and scoped attributes.
  *
  * @author Keith Donald
+ * @author Juergen Hoeller
  * @since 3.0.1
  */
 public class EvalTag extends HtmlEscapingAwareTag {
@@ -140,17 +142,21 @@
public class EvalTag extends HtmlEscapingAwareTag {
 	private static class JspPropertyAccessor implements PropertyAccessor {
 
 		private final PageContext pageContext;
-		
+
+		private final VariableResolver variableResolver;
+
 		public JspPropertyAccessor(PageContext pageContext) {
 			this.pageContext = pageContext;
+			this.variableResolver = pageContext.getVariableResolver();
 		}
-		
+
 		public Class<?>[] getSpecificTargetClasses() {
 			return null;
 		}
 
 		public boolean canRead(EvaluationContext context, Object target, String name) throws AccessException {
-			return target == null && (resolveImplicitVariable(name) != null || this.pageContext.findAttribute(name) != null);
+			return (target == null && (resolveImplicitVariable(name) != null) ||
+					this.pageContext.findAttribute(name) != null);
 		}
 
 		public TypedValue read(EvaluationContext context, Object target, String name) throws AccessException {
@@ -170,8 +176,11 @@
public class EvalTag extends HtmlEscapingAwareTag {
 		}
 		
 		private Object resolveImplicitVariable(String name) throws AccessException {
+			if (this.variableResolver == null) {
+				return null;
+			}
 			try {
-				return this.pageContext.getVariableResolver().resolveVariable(name);
+				return this.variableResolver.resolveVariable(name);
 			}
 			catch (Exception ex) {
 				throw new AccessException(
